
/* 
1 页面加载的时候
  1 从缓存中获取购物车数据 渲染到页面中
    这些数据  checked=true 
2 微信支付
  1 哪些人 哪些帐号 可以实现微信支付
    1 企业帐号 
    2 企业帐号的小程序后台中 必须 给开发者 添加上白名单 
      1 一个 appid 可以同时绑定多个开发者
      2 这些开发者就可以公用这个appid 和 它的开发权限  
3 支付按钮
  1 先判断缓存中有没有token
  2 没有 跳转到授权页面 进行获取token 
  3 有token,进行下面操作
  4 创建订单 获取订单编号
  5 已经完成了微信支付
  6 手动删除缓存中 已经被选中了的商品 
  7 删除后的购物车数据 填充回缓存
  8 再跳转页面 
 */
import { getSetting, chooseAddress, openSetting, showModal, showToast, requestPayment } from "../../utils/asyncWx.js";
import { request } from "../../request/http";
Page({
  data: {
    address: {},
    cart: [],
    totalPrice: 0,
    totalNum: 0
  },
  onShow() {
       //渲染选中的数据
      let carts= wx.getStorageSync('cart') 
      let address=wx.getStorageSync('address')
      let cart= carts.filter(item=>item.checked)
      let totalPrice=0,totalNum=0;
      //计算总价和数据
      cart.forEach(item=>{
        totalPrice+=(item.goods_price*item.num)
        totalNum+=item.num
      })
      console.log('过滤后的数据',cart);
      this.setData({
        cart,address,totalPrice,totalNum
      })
      
  
  },
  // 点击 支付 
  async handleOrderPay() {
      //1.判断有没有token
      let token=wx.getStorageSync('token')
      if(!token){
         wx.navigateTo({
           url: '/pages/auth/index',
         })
         return
      }
      //2.有token话-创建订单-  创建订单,要传参-订单总价,收货地址,所有要支付的商品信息
      let {totalPrice,address,cart}=this.data
      let arr=[];
      cart.forEach(item=>{
          arr.push({"goods_id":item.goods_id,"goods_number":item.num,"goods_price":item.goods_price}) 
      })
     let res=await request({url:'my/orders/create',method:'post',data:{"order_price":totalPrice,"consignee_addr":address.all,"goods":arr}
     })
     //3.传入订单编号，生成预支付订单
     if(res.meta.status===200){
          let order_number=res.message.order_number
          let res1=await request({url:'my/orders/req_unifiedorder',method:'post',data:{"order_number":order_number}})
          console.log('预支付订单',res1);
          if(res1.meta.status===200){
              let {pay}=res1.message
              console.log('pay',pay);
              //4.拉起微信的支付窗口
              wx.requestPayment({
                ...pay,
                success (res) { 
                  console.log('拉起成功',res);  //如果有权限是能拉起成功的
                },
                fail (err) {
                  console.log('拉起失败',err); //咱账号没有权限，所以会拉起失败 {errMsg: "requestPayment:fail no permission"}
                 }
              })

          }
          
          //5.查询订单支付状态，提醒用户是否支付成功
          let res2=await request({url:'my/orders/chkOrder',method:'post',data:{"order_number":order_number}})
          console.log('是否支付',res2);
          if(res2.meta.status===200){
             wx.showToast({
               title: '支付成功',
             })
             wx.navigateTo({
               url: '/pages/order/index',
             })
          } 
          else{
            wx.showToast({
              title: '支付失败',
            })
          } 

     }
    
  }

})



